package com.lagou.server;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.List;

import com.lagou.model.User;

/**
 * 编程实现服务器端对学员账户信息的管理
 */
public class ServerUserDao {
	// 声明成员变量
	private List<User> userList;
	
	/**
	 * 自定义构造方法实现成员变量的初始化
	 * @param userList
	 */
	public ServerUserDao(List<User> userList) {
		this.userList = userList;
	}
	
	/**
	 * 自定义成员方法实现将文件中所有学员账户信息读取到List集合中并返回
	 * @throws IOException 
	 * @throws FileNotFoundException 
	 * @throws ClassNotFoundException 
	 */
	@SuppressWarnings("unchecked")
	public List<User> readUserFile() throws FileNotFoundException, IOException, ClassNotFoundException {
		// 判断文件是否存在，只有文件存在且有内容时才需要读取文件中的信息
		File f1 = new File("./user.txt");
		if(f1.exists() && f1.length() > 48) {
			ObjectInputStream ois = new ObjectInputStream(
					new FileInputStream(f1));
			userList = (List<User>) ois.readObject();
			ois.close();
		}
		return userList;
	}
	
	/**
	 * 自定义成员方法实现将集合中的所有学员账户信息写入到文件中
	 * @throws IOException 
	 * @throws FileNotFoundException 
	 */
	public void writeUserFile() throws FileNotFoundException, IOException {
		ObjectOutputStream oos = new ObjectOutputStream(
				new FileOutputStream("./user.txt"));
		oos.writeObject(userList);
		oos.close();
		System.out.println("保存所有学员账户信息成功！");
	}
}
